package com.zw.a.basic.a09.demo05_simpledateformat;

//案例: 定义工具类DateUtils, 用来操作Date对象.

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;

/*
    需求:
        1.定义工具类DateUtils, 该类有两个方法: date2String(), string2Date(), 分别用来格式化, 解析日期.
        2.在测试类中, 测试上述的两个方法.
    工具类的特点:
        1. 构造方法全部私有化.
        2. 成员方法都是静态的, 可以通过 类名. 的形式调用.
 */
public class DateUtils {
    //1. 私有化构造方法.
    private DateUtils() {
    }

    /**
     * 2. 定义date2String(), 用来实现日期的格式化操作.
     * @param d 要进行格式化操作的日期对象.
     * @param pattern 模板.
     * @return 当前日期对象格式化后的字符串形式.
     */
    public static String date2String(Date d, String pattern) {
        //2.1 创建SimpleDateFormat对象.
        SimpleDateFormat sdf = new SimpleDateFormat(pattern);
        //2. 调用 SimpleDateFormat#format()方法, 用来实现日期的格式化操作.
        return sdf.format(d);
    }

    /**
     * 3. 定义string2Date(), 用来实现日期的解析操作.
     * @param str       要进行解析操作的字符串.
     * @param pattern   模板
     * @return          指定的字符串解析后, 获取的Date对象.
     * @throws ParseException 如果解析失败, 则抛出异常.
     */
    public static Date string2Date(String str, String pattern) throws ParseException {
        //3.1 创建SimpleDateFormat对象.
        SimpleDateFormat sdf = new SimpleDateFormat(pattern);
        //3.2 调用SimpleDateFormat#parse()方法, 用来实现日期的解析操作.
        return sdf.parse(str);
    }
}
